hvm: Allow HVM guests direct access to 0xed debug/delay port
authorKeir Fraser <keir.fraser@citrix.com>
Fri, 20 Mar 2009 08:42:14 +0000 (08:42 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Fri, 20 Mar 2009 08:42:14 +0000 (08:42 +0000)
Port 0x80 is already passed-through.  Writes to port 0x80 are
traditionally used as IO delay.  Recent Linux kernel versions can be
configured to use port 0xed instead (CONFIG_IO_DELAY_0XED=3Dy).
Ubuntu 8.04 and later kernels are configured to use port 0xed.

In Linux IO delay is implemented by (in|out)[bwl]_p.  From a first
glance at Linux it looks like the only relevant usage of delayed IO is
in drivers/video/console/vgacon.c.  Affected is VGA console
initialization and font setup.  Output / scrolling is not affected.

Signed-off-by: Thomas Friebel <thomas.friebel@amd.com>
xen/arch/x86/hvm/hvm.c

index c8c53c624415d506fb0524339e483adaf985f91c..9a6d6cd5a1d49ad940b3e495a85239c76484513c 100644 (file)
@@ -74,11 +74,12 @@ void hvm_enable(struct hvm_function_table *fns)
     printk("HVM: %s enabled\n", fns->name);
 
     /*
-     * Allow direct access to the PC debug port (it is often used for I/O
-     * delays, but the vmexits simply slow things down).
+     * Allow direct access to the PC debug ports 0x80 and 0xed (they are
+     * often used for I/O delays, but the vmexits simply slow things down).
      */
     memset(hvm_io_bitmap, ~0, sizeof(hvm_io_bitmap));
     __clear_bit(0x80, hvm_io_bitmap);
+    __clear_bit(0xed, hvm_io_bitmap);
 
     hvm_funcs   = *fns;
     hvm_enabled = 1;